iT邦幫忙

2023 iThome 鐵人賽

DAY 20
0
AI & Data

Fast ai 30天系列 第 20

CNN(三)補充處理彩色圖片的觀念

  • 分享至 

  • xImage
  •  
  • notbook 連結
    還是一樣是書上第十三章的notebook ,但前兩天沒提是因為突然跳出這個彩色的會離題太遠,所以今天補充。

今天來寫一下彩色圖片處理
前面2天都是針對黑白或是灰階圖片,簡單的說,就是只有一個通道

彩色圖按照我們采用的影像擷取方法,可以分為RGB 三個通道

https://ithelp.ithome.com.tw/upload/images/20231005/201105790igXy22Oua.png

由下圖可以看到每個通道都有自己的sliding window,這些會根據不同的kernel 來計算,也就是說不單單是同一樣的filter 去三個不同顏色的圖片上掃描。 每個通道都有自己的一組濾波器,這些濾波器可以獨立地學習和檢測特定的特徵或模式。這樣可以使神經網路更有效地捕捉圖像中不同通道之間的信息和特徵。每個濾波器都是權重矩陣,與通道中的圖像進行卷積運算,然後綜合這些結果以生成該通道的輸出。因此,不同通道的輸出可以包含不同的特徵信息們有一定數量的通道,並且我們需要與通道數相同數量的濾波器。
對於每個通道,我們將窗口的元素與相應的濾波器元素相乘,然後對結果進行總和(如我們之前所看到的),並在所有濾波器上進行總和。在這個示例中,卷積層在該窗口上的結果是r+g+b

其中有一句話特別說明:
Our kernel doesn't have a size of 3 by 3, but ch_in (for channels in) is 3 by 3
應該是在說我們的Kernel 的size 不再是3x3 ,而ch_in 是3x3
我其實覺得這句話好像有寫錯,我認為應該ch_in 是3,然後kernel size 我們可以定為3x3 ,這樣總數就是3x3x3

https://ithelp.ithome.com.tw/upload/images/20231005/20110579TIIjfhgadJ.png
https://ithelp.ithome.com.tw/upload/images/20231005/20110579l1ZEKgrbfq.png

對於處理彩色圖片,我們需要使用多個卷積核來捕捉不同的特徵。每個卷積核的大小通常為 ch_in(輸入通道數)x ks x ks,其中 ch_in 是輸入圖片的通道數,ks 是卷積核的尺寸。在圖像的每個位置,卷積核的每個通道與輸入圖像的對應通道的局部區域進行逐元素相乘,然後進行加總,產生一個數值。這樣的操作對於每個卷積核都會執行一次,從而生成多個特徵圖,每個特徵圖都對應不同的卷積核。

總共有 ch_out 個這樣的卷積核,因此卷積層的輸出將是一批具有 ch_out 個通道的圖片,其高度和寬度由前面提到的公式給出。這將給我們 ch_out 個大小為 ch_in x ks x ks 的張量,我們將它們表示為一個四維的大張量。在PyTorch中,這些權重的維度順序是 ch_out x ch_in x ks x ks。

然後我們可能希望為每個卷積核添加一個偏差(bias)。在這種情況下,卷積層的最終結果將是 yR+yG+yB+b,其中 yR、yG 和 yB 分別是三個通道上的卷積結果,b 是每個卷積核的bias,就像在線性層中一樣,bias的數量等於卷積核的數量,因此偏差是一個大小為 ch_out 的向量。

對於訓練使用彩色圖片的CNN,不需要特殊的機制,只需確保第一層的卷積核數目對應輸入的通道數(通常為三通道,代表RGB顏色)。

大多數情況下,不同的色彩編碼方式不會對模型的結果產生影響,只要在轉換過程中不丟失信息即可。不過,轉換成灰度圖像可能會丟失顏色信息,因此不建議這樣做,但轉換成HSV色彩空間通常不會產生影響。


上一篇
CNN(二)
下一篇
美國專利片語相似度大賽(二)EDA
系列文
Fast ai 30天30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言